package com.wind.trademark.bill.service;

import java.util.List;
import java.util.Map;

import com.wind.trademark.bill.model.BlBill;
import com.wind.trademark.bill.model.BlBillDetail;
import com.wind.trademark.bill.model.BlFee;
import com.wind.trademark.bill.vo.BillInfoVo;
import com.wind.trademark.bill.vo.BillVo4Detail;
import com.wind.trademark.bill.vo.BillVo4Fee;
import com.wind.trademark.common.exception.TmException;
import com.wind.trademark.common.vo.PageBean;
import com.wind.trademark.common.vo.PageParam;




/**
 * @author <a href="mailto:xmufeng@163.com">Wind Wu</a>
 * 
 */
public interface BillService {

	PageBean queryBill(PageParam pageParam, Map<String, Object> params);

	PageBean queryBillDetail(PageParam pageParam, Map<String, Object> params);


	void deleteBillDetails(List<Long> ids);
	
	void deleteFees(List<Long> ids);


	List<BillVo4Fee> queryBillVoAndItsFeeVo(Long taskId);

	List<BillVo4Detail> queryBillVoAndItsDetailVo(Long billId);

	
	BlBill saveOrUpdateBill(BlBill blBill);

	BlFee saveOrUpdateBlFee(BlFee blFee);

	
	BlBill loadBill(Long id);

	BlBillDetail loadBillDetail(Long id);

	BlFee loadBlFee(Long id);


	void deleteBillDetail(Long id);

	void deleteBill(Long id) throws TmException;

	List<BlBillDetail> queryBlBillDetailByBillId(Long billId);

	List<BlFee> queryBlFeelByBillId(Long billId);

	List<BlBill> queryBlBillByTaskId(Long taskId);

	BlBillDetail saveOrUpdateBlBillDetail(BlBillDetail blBillDetail);

	BillInfoVo getBillInfo(Long billId);

	Double getTotalAmountByBillId(Long billId);

	Double getPaidAmountByBillId(Long billId);

	PageBean queryFee(PageParam pageParam, Map<String, Object> params);

	BlBill changeBillStatus(Long billId, String status) throws TmException;








}